"""
给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2的31次方,  2的31次方−1] ，就返回 0。

示例 1：
输入：x = 123
输出：321

示例 2：
输入：x = -123
输出：-321

示例 3：
输入：x = 120
输出：21

示例 4：
输入：x = 0
输出：0


提示：
−2的31次方 <= x <= 2的31次方−1
"""
import time


def integer_rollback(x):
    x = str(x)  # 转字符串
    if x[0] == 0:  # 因为整数最前为0，所以第一位为0则整数是0
        return 0
    if x[0] == "-":   # 判断是否为负数
        x = x[1:]    # 提取符号
        x = -int("".join(reversed(x)))  # 反转字符串并转回整数类型
        if x < -2 ** 31:  # 因为是负数 所以判断是否小于2的32次方
            return 0
        else:
            return x
    else:
        x = int("".join(reversed(x)))   # 因为将0和负数的情况排除只能为正数，所以直接取反并转整型
        if x > (2 ** 31) - 1:   # 因为必定是正整数 所以判断是否大于2的32次方
            return 0
        else:
            return x


if __name__ == "__main__":
    start = time.time()
    time.sleep(1)
    x = -1230
    print(integer_rollback(x))
    end = time.time()
    print(f"运行时间:{end - start}")
